package com.youpai.platform.user.service.service;


import com.youpai.platform.user.web.entity.dto.UserItemDTO;
import com.youpai.platform.user.web.entity.req.*;
import com.youpai.platform.user.web.entity.resp.*;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @Description: 用户服务service
 * @Author:welles
 * @Date:2022/7/23
 */
public interface UserService {

    /**
     * 用户注册
     *
     * @param req 用户注册请求参数
     * @return 用户注册结果
     */
    UserLoginResp userRegister(UserRegisterReq req, HttpServletResponse resp);

    /**
     * 用户登录 - 暂时没有该功能
     *
     * @param req req
     * @return 用户信息
     */
    UserLoginResp userLogin(UserLoginReq req, HttpServletResponse resp);

    /**
     * 发送验证码信息
     *
     * @param req 发送验证码信息请求参数
     * @return 发送验证结果
     */
    SendVerificationCodeResp sendVerificationCode(SendVerificationCodeReq req);

    /**
     * 根据token获取用户信息
     *
     * @return 用户信息
     */
    GetUserInfoByTokenResp getUserINfoByToken();

    /**
     * 更新用户信息
     *
     * @param req 更新用户信息请求参数
     * @return 更新结果
     */
    UpdateUserResp updateUserInfo(UpdateUserReq req);

    /**
     * 找回密码
     *
     * @param req 找回密码请求参数
     * @return 找回结果
     */
    UserResp retrievePwd(FindPwdReq req);

    /**
     * 判断验证码是否正确
     *
     * @param req 判断验证码是否正确
     * @return 判断验证码结果
     */
    UserResp checkVerificationCode(JudgeCodeReq req);

    /**
     * 根据条件搜索用户信息列表
     *
     * @param req 用户信息
     * @return 搜索用户信息结果
     */
    List<UserItemDTO> searchUserByUidOrName(SearchUserReq req);

    UserResp updateUserType(UserTypeReq req);
}
